import {
    getInfo,
    login as apiLogin,
    register as apiRegister,
    getOrderStats,
    getOrderOverview,
    updateUserInfo,
    changePassword as apiChangePassword,
} from '../services/api';
import * as userInfo from "element-plus/es/locale/index";
// 引入注册API

const user = {
    state() {
        return {
            userName: '',
            userRole: '', // 新增字段用于存储用户角色
            isLoggedIn: !!localStorage.getItem('authToken'), // 检查是否有token
            userInfo: null, // 新增字段用于存储更多用户详情
            orderStats: null, // 新增字段用于存储订单状态
            orderOverview: null, // 新增字段用于存储订单概览
        };
    },
    mutations: {
        setUserName(state, userName) {
            state.userName = userName;
        },
        setLoginStatus(state, status) {
            state.isLoggedIn = status;
        },
        setUserRole(state, role) {
            state.userRole = role; // 新增 mutation 用于设置用户角色
        },
        setUserInfo(state, info) {
            state.userInfo = info; // 更新用户详情
        },
        updateUserInfo(state, info) {
            state.userInfo = {...state.userInfo, ...info}; // 更新用户信息
        },
        setOrderStats(state, stats) { // 新增 mutation 用于设置订单状态
            state.orderStats = stats;
        },
        setOrderOverview(state, overview) { // 新增 mutation 用于设置订单概览
            state.orderOverview = overview;
        },
    },
    actions: {
        // 新增修改密码action
        async changePassword({ commit }, payload) {
            try {
                const response = await apiChangePassword(payload);

                // 关键修复：检查业务状态码
                if (response.data.code !== 1) {
                    throw new Error(response.data.message || '密码修改失败');
                }

                // 成功处理（如更新本地状态）
                commit('UPDATE_USER', response.data.data);
                return response.data;
            } catch (error) {
                // 统一错误处理
                throw new Error(error.response?.data?.message || error.message);
            }
        },
        login({ commit }, { userName, password }) {
            return apiLogin(userName, password).then(response => {
                if (response.code === 1) { // 假设 code: 1 表示成功
                    const user = response.data;
                    localStorage.setItem('authToken', user.token);
                    commit('setUserName', user.username);
                    commit('setLoginStatus', true);

                    // 获取用户详细信息
                    return this.dispatch('fetchUserInfo').then(userInfoResponse => {
                        console.log('User info:', userInfoResponse);
                        return userInfoResponse;
                    }).catch(error => {
                        console.error('获取用户信息失败:', error.message || '未知错误');
                        throw error; // 确保上层能够捕获错误
                    });
                } else {
                    throw new Error('Login failed');
                }
            }).catch(error => {
                console.error('登录错误:', error.message || '未知错误');
                throw error; // 抛出错误以便外部处理
            });
        },
        register({ commit }, user) { // 新增注册方法
            return apiRegister(user).then(response => {
                if (response.success) {
                    commit('setUserName', user.userName);
                    commit('setLoginStatus', true);
                    // 这里可以添加更多的用户信息处理
                }
                return response;
            });
        },
        logout({ commit }) {
            localStorage.removeItem('authToken'); // 清除 token
            commit('setLoginStatus', false);
            commit('setUserInfo', null);
            commit('setUserRole', ''); // 清除用户角色
        },

        fetchOrderStats({ commit }) { // 新增获取订单状态的 action
            return getOrderStats().then(stats => {
                commit('setOrderStats', stats);
            });
        },
        fetchOrderOverview({ commit }) { // 新增获取订单概览的 action
            return getOrderOverview().then(overview => {
                commit('setOrderOverview', overview); // 更新订单概览到状态
            });
        },
        updateUserInfo({ commit }, userInfo) {
            return updateUserInfo(userInfo).then(response => { // 调用 API 更新用户信息
                commit('setUserInfo', response); // 更新用户信息
                return response;
            });
        },
        fetchUserInfo({ commit }) {
            return getInfo() // 调用 API 获取用户信息
                .then(userInfo => {
                    if (userInfo && userInfo.code === 1) { // 假设 code: 1 表示成功
                        commit('setUserInfo', userInfo.data); // 提交 mutation 更新用户信息
                        return userInfo.data; // 返回用户信息以便后续处理
                    } else {
                        throw new Error('Failed to fetch user info');
                    }
                })
                .catch(error => {
                    console.error('获取用户信息失败:', error);
                    throw error; // 确保上层能够捕获错误
                });
        },
    },
    getters: {
        userRole: (state) => {
            return state.userRole; // 确保返回的是 state 中的 userRole
        },
        userInfo: (state) => state.userInfo, // 新增 getter 用于获取用户详情
        orderStats: (state) => state.orderStats, // 新增 getter 用于获取订单状态
        orderOverview: (state) => state.orderOverview, // 新增 getter 用于获取订单概览
        isLoggedIn: (state) => state.isLoggedIn,
    },
};
export const useUserStore = () => {
  const state = {
    userId: null,
  };

  const loadUserInfo = async () => {
    state.userId = userInfo.id; // 确保 userId 被正确设置
  };

  return {
    ...state,
    loadUserInfo,

  };
};
export default user;


